home *** CD-ROM | disk | FTP | other *** search
- #include <Files.h>
- #include <Quickdraw.h>
- #include <Windows.h>
- #include <dialogs.h>
- #include <OSEvents.h>
- #include <StandardFile.h>
- #include <Memory.h>
- #include <StdIO.h>
-
- #define TRUE 0xFF
- #define FALSE 0
-
- main()
- {
- ParmBlkPtr myRecPtr;
- HParmBlkPtr myVRecPtr;
- OSErr err;
- Point where = {20,20};
- SFReply reply;
- short refnum;
- char* string;
-
- InitGraf(&qd.thePort);
- FlushEvents(everyEvent, 0);
- InitWindows();
- InitDialogs(nil);
- InitCursor();
-
- /* does not work version */
-
- string = (char*) "\pWhere is junk file";
-
- SFGetFile (where, (Str255) string, nil, -1, (SFTypeList) nil, nil, &reply);
- err = FSOpen(reply.fName, reply.vRefNum, &refnum);
- if (err != noErr)
- Debugger();
-
- myRecPtr = (ParmBlkPtr) NewPtrClear(sizeof(ParamBlockRec));;
- myRecPtr->ioParam.ioRefNum = refnum;
- myRecPtr->ioParam.ioReqCount = 0x7fffffff;
-
- err = PBAllocate (myRecPtr, FALSE);
-
- printf("error = %d, Actual count = %d\n",err, myRecPtr->ioParam.ioActCount);
-
- err = FSClose(refnum);
- if (err != noErr)
- Debugger();
-
- /* The method which works - work around to above bug */
-
- string = (char*) "\pWhere is File";
-
- SFGetFile (where, (Str255) string, nil, -1, (SFTypeList) nil, nil, &reply);
- err = FSOpen(reply.fName, reply.vRefNum, &refnum);
- if (err != noErr)
- Debugger();
-
- myVRecPtr = (HParmBlkPtr) NewPtrClear(sizeof(HParamBlockRec));;
- myVRecPtr->volumeParam.ioVRefNum = reply.vRefNum;
-
- err = PBHGetVInfo(myVRecPtr, FALSE);
- if (err != noErr)
- Debugger();
-
- printf("# of blocks = %d\n Size of blocks = %d\n",myVRecPtr->volumeParam.ioVNmAlBlks, myVRecPtr->volumeParam.ioVAlBlkSiz);
-
- myRecPtr = (ParmBlkPtr) NewPtrClear(sizeof(ParamBlockRec));;
- myRecPtr->ioParam.ioRefNum = refnum;
- myRecPtr->ioParam.ioReqCount = (myVRecPtr->volumeParam.ioVNmAlBlks) *
- (myVRecPtr->volumeParam.ioVAlBlkSiz);
-
- err = PBAllocate (myRecPtr, FALSE);
-
- printf("error = %d, Actual count = %d\n",err, myRecPtr->ioParam.ioActCount);
-
- err = FSClose(refnum);
- if (err != noErr)
- Debugger();
- }